
all: demo1 demo2 demo3 demo4
# 第(1)种情况：直接全部编译，main.c strong_symbol.c weak_symbol.c
demo1:
	gcc -g -o demo1.out main.c strong_symbol.c weak_symbol.c -Wall
	rm -rf *.o

# 第(2)种情况：直接全部编译，main.c strong_symbol.c weak_symbol.c
demo2:
	gcc -g -o demo2.out main.c weak_symbol.c strong_symbol.c -Wall
	rm -rf *.o

# 第(3)种情况：strong_symbol.c weak_symbol.c编译成.a静态库，打包顺序为 weak_symbol.o strong_symbol.o，然后再和main.c进行链接
demo3:
	gcc -c weak_symbol.c strong_symbol.c
	ar -r libsymbol_demo3.a weak_symbol.o strong_symbol.o
	gcc -o demo3.out main.c -lsymbol_demo3 -L.
	rm -rf *.o

# 第(4)种情况：strong_symbol.c weak_symbol.c 编译成.a静态库，打包顺序为 strong_symbol.o weak_symbol.o，然后再和main.c进行链接
demo4:
	gcc -c weak_symbol.c strong_symbol.c
	ar -r libsymbol_demo4.a strong_symbol.o weak_symbol.o
	gcc -o demo4.out main.c -lsymbol_demo4 -L.
	rm -rf *.o

clean:
	@rm -rf *.a *.so *.out

.PHONY: clean
